Phone no: (021) 7989671 or email us: info@zahra-itsolution.com
Posted on 16 August 2024
Untuk mengimplementasikan pengaturan akses berdasarkan peran di Laravel, kamu bisa mengikuti langkah-langkah berikut:
1. Menambahkan Kolom Role ke Tabel Users
Jika belum ada, tambahkan kolom role pada tabel users. Kamu bisa menambahkan kolom ini melalui migrasi baru:
php artisan make:migration add_role_to_users_table --table=users
Kemudian, edit file migrasi yang baru dibuat di database/migrations/xxxx_xx_xx_add_role_to_users_table.php:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddRoleToUsersTable extends Migration
{
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('role')->default('user'); // Menambahkan kolom role dengan default value
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('role');
});
}
}
php artisan migrate
2. Buat seeder
Buat seeder untuk tabel users dengan perintah artisan berikut:
php artisan make:seeder UserSeeder
role
.<?php namespace Database\Seeders; use Illuminate\Database\Seeder; use App\Models\User; class UserSeeder extends Seeder { public function run() { // Create SuperAdmin User::create([ 'name' => 'SuperAdmin', 'email' => 'superadmin@example.com', 'password' => bcrypt('password'), 'role' => 'superadmin', // Ensure this matches your role field ]); // Create Admin User::create([ 'name' => 'Admin', 'email' => 'admin@example.com', 'password' => bcrypt('password'), 'role' => 'admin', // Ensure this matches your role field ]); // Create User User::create([ 'name' => 'User', 'email' => 'user@example.com', 'password' => bcrypt('password'), 'role' => 'user', // Ensure this matches your role field ]); } }
jalankan seeder untuk memasukan data ke database:
php artisan db:seed --class=UserSeeder
Jika kamu ingin mengatur tampilan di Blade views
berdasarkan peran pengguna, kamu bisa melakukannya dengan kondisi @if
di dalam file Blade. Berikut adalah cara melakukannya:
Pastikan kolom role
di tabelusers
sudah ada dan memiliki nilai yang sesuai superadmin, admin, user
. Jika sudah ada, pastikan datanya benar. Jika belum ada, kamu bisa menambahkannya seperti yang dijelaskan sebelumnya.
Jika sudah gunakan kondisi Blade untuk menampilkan elemen yang berbeda berdasarkan peran pengguna.
Contoh Blade View (resources/views/Jurusan/index.blade.php):
@if (auth()->user()->role === 'superadmin' || auth()->user()->role === 'admin')
<a href="{{ route('matakuliah.create') }}" class="btn btn-primary">Tambah Mata Kuliah</a>
@endif
@if (auth()->user()->role === 'superadmin')
<a href="{{ route('matakuliah.trash') }}" class="btn btn-warning">Trash</a>
@endif
kamu hanya perlu menyesuaikan untuk button yang akan di tampilkan.
Jika anda ingin menampilkan button hanya untukrole
:
superadmin:
@if (auth()->user()->role === 'superadmin'
@endif
admin:
@if (auth()->user()->role === 'admin'
@endif
karna user
hanya boleh melihat data dan tidak bisa mengakses crud kamu tidak perlu menambahkan @if
untuk user
.